const { execFileSync } = require('child_process')
const path = require('path')
const {
  __CONFIG_VUE_APP_ENV,
  __CONFIG_VUE_APP_MODEL,
  __CONFIG_VUE_APP_PROTOCOL_HTTPS,
  __CONFIG_VUE_APP_DEV_SERVER_PORT,
  __CONFIG_VUE_APP_CDN_PATH,
  __CONFIG_VUE_APP_ROUTER_BASE,
  __CONFIG_VUE_APP_API_BASE_URL,
  __CONFIG_VUE_APP_API_ROUTER
} = require('./config/env')
const modules = require('./modules')
const report = require('./report')

function mergeConfig(defaultConfig, coverConfig) {
  return Object.assign({}, defaultConfig, coverConfig)
}

module.exports = {
  prompts: [
    {
      label: '项目名称（中文名）',
      name: 'htmlTitleName',
      type: 'input'
    }
  ],
  filters: {},
  complete(data) {
    const cwd = path.join(data.__projectPath, data.__projectName)
    execFileSync('git', ['init'], {
      cwd
    })
  },
  projectConfig: [
    {
      title: '本地开发环境配置',
      filepath: '.env.development.local.ejs',
      outputType: 'yml',
      prompts: [
        mergeConfig(__CONFIG_VUE_APP_ENV, {
          initialValue: 'dev'
        }),
        mergeConfig(__CONFIG_VUE_APP_MODEL, {
          initialValue: 'local'
        }),
        mergeConfig(__CONFIG_VUE_APP_CDN_PATH, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_ROUTER_BASE, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_BASE_URL, {
          initialValue: 'http://127.0.0.1:5010/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_ROUTER, {
          initialValue: 'api/xxx'
        }),
        mergeConfig(__CONFIG_VUE_APP_DEV_SERVER_PORT, {}),
        mergeConfig(__CONFIG_VUE_APP_PROTOCOL_HTTPS, {})
      ]
    },
    {
      title: 'development 环境配置',
      filepath: '.env.development.ejs',
      outputType: 'yml',
      prompts: [
        mergeConfig(__CONFIG_VUE_APP_ENV, {
          initialValue: 'dev'
        }),
        mergeConfig(__CONFIG_VUE_APP_MODEL, {
          initialValue: 'online'
        }),
        mergeConfig(__CONFIG_VUE_APP_CDN_PATH, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_ROUTER_BASE, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_BASE_URL, {
          initialValue: 'http://127.0.0.1:5010/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_ROUTER, {
          initialValue: 'api/xxx'
        })
      ]
    },
    {
      title: 'beta 环境配置',
      filepath: '.env.beta.ejs',
      outputType: 'yml',
      prompts: [
        mergeConfig(__CONFIG_VUE_APP_ENV, {
          initialValue: 'beta'
        }),
        mergeConfig(__CONFIG_VUE_APP_MODEL, {
          initialValue: 'online'
        }),
        mergeConfig(__CONFIG_VUE_APP_CDN_PATH, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_ROUTER_BASE, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_BASE_URL, {
          initialValue: 'http://127.0.0.1:5010/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_ROUTER, {
          initialValue: 'api/xxx'
        })
      ]
    },
    {
      title: '生产环境配置',
      filepath: '.env.production.ejs',
      outputType: 'yml',
      prompts: [
        mergeConfig(__CONFIG_VUE_APP_ENV, {
          initialValue: 'prod'
        }),
        mergeConfig(__CONFIG_VUE_APP_MODEL, {
          initialValue: 'online'
        }),
        mergeConfig(__CONFIG_VUE_APP_CDN_PATH, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_ROUTER_BASE, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_BASE_URL, {
          initialValue: 'http://127.0.0.1:5010/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_ROUTER, {
          initialValue: 'api/xxx'
        })
      ]
    },
    {
      title: 'env基础配置',
      filepath: '.env.ejs',
      outputType: 'yml',
      prompts: [
        mergeConfig(__CONFIG_VUE_APP_ENV, {
          initialValue: 'prod'
        }),
        mergeConfig(__CONFIG_VUE_APP_MODEL, {
          initialValue: 'online'
        }),
        mergeConfig(__CONFIG_VUE_APP_CDN_PATH, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_ROUTER_BASE, {
          initialValue: '/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_BASE_URL, {
          initialValue: 'http://127.0.0.1:5010/'
        }),
        mergeConfig(__CONFIG_VUE_APP_API_ROUTER, {
          initialValue: 'api/xxx'
        })
      ]
    }
  ],
  ejsOptions: {
    delimiter: '$$'
  },
  ...modules,
  ...report
}
